package com.ccp.dev.qbdms.service;

import com.ccp.dev.core.basic.base.BaseService;
import com.ccp.dev.core.basic.web.query.QueryFilter;
import com.ccp.dev.core.poi.excel.Excel;
import com.ccp.dev.core.util.BeanUtils;
import com.ccp.dev.core.util.StringUtil;
import com.ccp.dev.extend.model.ExtendSysFile;
import com.ccp.dev.qbdms.dao.WQbdTecTopicreviewDao;
import com.ccp.dev.qbdms.model.WQbdTecTopicreview;
import com.ccp.dev.qbdms.util.BaseUtil;
import com.ccp.dev.qbdms.util.ReadAttachmentUtil;

import java.util.List;
import javax.annotation.Resource;

import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;


/**
 * 课题评审会 信息操作服务类
 *
 * @author 王明亮
 * @date 2020-05-25 09:50:17
 */
@Service
@Transactional(rollbackFor = Exception.class)
public class WQbdTecTopicreviewService extends BaseService<WQbdTecTopicreview> {

    @Resource
    private WQbdTecTopicreviewDao dao;

    public HSSFWorkbook exportExcel(Excel excel, QueryFilter queryFilter) {
        List<WQbdTecTopicreview> dataList = this.dao.queryAll(queryFilter);
        int startRow = 1;
        //给每一个单元格赋值
        for (WQbdTecTopicreview data : dataList) {
            excel.cell(startRow, 0).value(data.getId());
            //excel.cell(startRow, 1).value(data.getMc());
            //可在赋值时，根据需求进行格式化
            //excel.cell(startRow, 2).value(DateFormatUtil.formatDate(data.getRq()));
            //excel.cell(startRow, 3).value(data.getSj());
            //excel.cell(startRow, 4).value(data.getTenantId());
            startRow++;
        }
        return excel.getWorkBook();
    }

    /**
     * 查询上报流程的业务数据
     *
     * @param dataId
     * @param tableName
     * @return
     */
    public List<WQbdTecTopicreview> reportList(String dataId, String tableName) {
        return dao.reportList(dataId, tableName);
    }

    /**
     * 导出用查询
     *
     * @param queryFilter 查询参数
     * @return list
     */
    public List<WQbdTecTopicreview> queryAll(QueryFilter queryFilter) {
        return dao.queryAll(queryFilter);
    }

    /**
     * 根据主表id查询主表加子表数据
     *
     * @param id 主表id
     * @return
     */
    public WQbdTecTopicreview getParentAndChilden(String id) {
        return getOneById(id);
    }

    /**
     * 保存接口传输的数据
     *
     * @param wQbdTecTopicreviewList 主表model,有子表的包含子表数据
     * @return
     */
    public void saveAll(List<WQbdTecTopicreview> wQbdTecTopicreviewList, List<ExtendSysFile> extendSysFileList) {
        ReadAttachmentUtil.getEntityData(wQbdTecTopicreviewList, extendSysFileList);
        wQbdTecTopicreviewList.forEach(wQbdTecTopicreview -> {
            wQbdTecTopicreview.setBelongdeptname(StringUtil.isNotEmpty(wQbdTecTopicreview.getFilldeptHospitalId()) ? BaseUtil.getCurrentTenOrgCodePath(wQbdTecTopicreview.getFilldeptHospitalId()) : BaseUtil.getCurrentTenOrgCodePath(wQbdTecTopicreview.getFilldeptid()));
            if (BeanUtils.isEmpty(dao.getById(wQbdTecTopicreview.getId()))) {
                dao.add(wQbdTecTopicreview);
            } else {
                dao.update(wQbdTecTopicreview);
            }
        });
    }

}
